const handleBlogRoute = require("./routes/blog");
const querystring = require('querystring');


// 处理post数据
const getPostData = (req) => {
  const promise = new Promise((resolve, reject) => {
    if (req.method !== 'POST') {
      resolve({})
      return;
    }

    if (req.headers['content-type'] !== 'application/json') {
      resolve([])
      return;
    }

    let postData = ''
    // 返回的是数据段
    req.on('data', (chunk) => {
      postData += chunk.toString();
    })
    req.on('end', () => {
      if (!postData) {
        resolve({})
        return;
      }
      resolve(JSON.parse(postData))
    })
  })
  return promise;
}

// 写回调函数，将createServer 中的回调函数抽离处理，方便维护
const serverHandler = (req, res) => {
  // 服务器业务代码

  // 1. 设置返回的数据类型
  res.setHeader('Content-Type', 'application/json');
  // 获取path
  const url = req.url;
  console.log('url：', url)
  req.path = url.split('?')[0] // 截取URL参数之前的部分
  //解析query
  req.query = querystring.parse(url.split('?')[1]);

  // 异步处理req
  getPostData(req).then(postData => {
    req.body = postData;
    const blogData = handleBlogRoute(req, res)
    if (blogData) {
      res.end(JSON.stringify(blogData));
      return;
    }
    // 如果不是上面的路由，返回以下结果
    res.writeHead(404, { 'Content-type': 'text/plain' }); // 无格式正文
    res.write('404 Not Found');
    res.end(); // 终止响应
  })
}

module.exports = serverHandler;